javauis/coreui_qt/javasrc/com/nokia/mj/impl/coreuiqt/CoreUiImpl.java
author hgs
Fri, 15 Oct 2010 12:29:39 +0300
changeset 80 d6dafc5d983f
parent 72 1f0034e370aa
permissions -rw-r--r--
v2.2.19_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 Nokia Corporation and/or its subsidiary(-ies).
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
     3
* All rights reserved.
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
     8
*
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
     9
* Initial Contributors:
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    11
*
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    12
* Contributors:
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    13
*
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    14
* Description: Java side Core UI accessor.
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    15
*
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    16
*/
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    17
package com.nokia.mj.impl.coreuiqt;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    18
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    19
import com.nokia.mj.impl.utils.Uid;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    20
import com.nokia.mj.impl.rt.support.Jvm;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    21
import com.nokia.mj.impl.rt.support.ApplicationUtils;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    22
import com.nokia.mj.impl.rt.support.ApplicationInfo;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    23
import com.nokia.mj.impl.coreui.CoreUi;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    24
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    25
import org.eclipse.swt.internal.extension.Toolkit;
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    26
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    27
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    28
/**
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    29
 * A gate to CoreUi Qt implementation.
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    30
 */
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    31
public class CoreUiImpl extends CoreUi
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    32
{
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    33
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    34
    public CoreUiImpl()
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    35
    {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    36
        // Load the native.
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    37
        Jvm.loadSystemLibrary("javacoreui");
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    38
    }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    39
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    40
    /**
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    41
     * Connects to the already created CoreUi.
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    42
     * @return permission to start the application. There is a small time
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    43
     *         window where user is able to cancel the application
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    44
     *         start. In this case the CoreUi stores the request and
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    45
     *         informs the caller of this method that the application
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    46
     *         should not be started.
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    47
     */
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    48
    protected boolean connectToUiImpl()
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    49
    {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    50
        return true;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    51
    }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    52
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    53
    /**
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    54
     * For creating the UI from Java side. This is meant for the pre-warmed
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    55
     * VM use case. Calling this method will lead creation of the CoreUI.
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    56
     * @param uid The UID of the application.
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    57
     * @param backGroundStart Should the UI be put into background.
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    58
     */
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    59
    protected void createUiImpl(Uid uid, boolean backGroundStart)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    60
    {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    61
        // CoreUiStartScreen.showStartScreen(backGroundStart);
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    62
    }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    63
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    64
    /**
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    65
     * For asking the runtime to do the shutdown of the application.
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    66
     */
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    67
    protected void shutdownRequestImpl()
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    68
    {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    69
        ApplicationUtils.getInstance().notifyExitCmd();
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    70
    }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    71
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    72
    /**
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    73
     * For asking the runtime to bring the application to foreground.
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    74
     */
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    75
    protected void foregroundRequestImpl()
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
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    79
    /**
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    80
     * For asking if the UI is in foreground.
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    81
     */
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    82
    protected boolean isUiInForegroundImpl()
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    83
    {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    84
        return true;
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    85
    }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    86
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    87
    /**
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    88
     * For asking if the UI to remove the icon from the task manager.
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    89
     */
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    90
    protected void hideApplicationImpl(boolean hide)
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    91
    {
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    92
        // Native logic is reversed between Symbian^3 and Symbian^4.
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    93
        // platform specific part.
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    94
        _hideApplication(!hide);
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    95
    }
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
    96
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    97
    /**
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    98
     * Executes given Runnable synchronously in UI thread.
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    99
     * <br>
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   100
     * This method should only be used in cases where it
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   101
     * is absolutely needed. Before using this method,
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   102
     * consider carefully if the use case really requires
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   103
     * code to be executed in UI thread.
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   104
     * <br>
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   105
     * This method is only supported in Qt based runtimes.
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   106
     * <br>
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   107
     * @param runnable Runnable to be executed
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   108
     * @throws RuntimeException if execution in UI thread
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   109
     * is not supported
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   110
     */
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   111
    protected void runInSyncUiThreadImpl(Runnable runnable)
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   112
    {
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   113
        Toolkit.getInternalDisplay().syncExec(runnable);
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   114
    }
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   115
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   116
    /**
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   117
     * Executes given Runnable asynchronously in UI thread.
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   118
     * <br>
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   119
     * This method should only be used in cases where it
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   120
     * is absolutely needed. Before using this method,
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   121
     * consider carefully if the use case really requires
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   122
     * code to be executed in UI thread.
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   123
     * <br>
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   124
     * This method is only supported in Qt based runtimes.
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   125
     * <br>
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   126
     * @param runnable Runnable to be executed
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   127
     * @throws RuntimeException if execution in UI thread
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   128
     * is not supported
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   129
     */
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   130
    protected void runInAsyncUiThreadImpl(Runnable runnable)
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   131
    {
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   132
        Toolkit.getInternalDisplay().asyncExec(runnable);
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   133
    }
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   134
72
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   135
    private native void _hideApplication(boolean hide);
1f0034e370aa v2.2.15_1
hgs
parents:
diff changeset
   136
}