javacommons/utils/javasrc/com/nokia/mj/impl/utils/ResourceLoader.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:
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     1
/*
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     2
* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     3
* All rights reserved.
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     4
* This component and the accompanying materials are made available
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     6
* which accompanies this distribution, and is available
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     8
*
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
     9
* Initial Contributors:
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    11
*
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    12
* Contributors:
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    13
*
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    14
* Description:
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    15
*
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    16
*/
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    17
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    18
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    19
package com.nokia.mj.impl.utils;
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    20
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    21
import com.nokia.mj.impl.coreui.CoreUi;
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    22
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    23
import java.util.Enumeration;
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    24
import java.util.Hashtable;
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    25
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    26
/**
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    27
 * Resource loader to get localised strings and Formatter patterns.
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    28
 * <br>
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    29
 * Usage:
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    30
 * <pre>
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    31
 *   ResourceLoader res = ResourceLoader.getInstance("javainstaller", "qtn_java_installer_");
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    32
 *   Label subjectLabel = createLabel(
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    33
 *       res.format("subject").arg(certificate.getSubject()).toString(),
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    34
 *       horizontalSpan, labelStyle);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    35
 * </pre>
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    36
 * <br>
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    37
 * It is possible to pass a comma separated list of text ids to format
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    38
 * method and also to pass a comma separated list of resource filenames
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    39
 * and text id prefixes to getInstance method. In this case the texts
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    40
 * are searched in the order they are listed and the first text
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    41
 * that is found will be returned. This can be used to specify texts
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    42
 * for different platforms in a single parameter, provided that the
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    43
 * text ids, prefixes and resource filenames are unique in each platform.
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    44
 * <br>
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    45
 * If the text ids, prefixes and resource filenames are not unique
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    46
 * in each platform, then a separate ResourceLoader instance must
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    47
 * be obtained for every platform.
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    48
 * <br>
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    49
 * When more than one resource filenames and text id prefixes
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    50
 * are used, the Nth prefix is applied only to the Nth resource file.
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    51
 * This means that the number of comma separated resource filenames and
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    52
 * prefixes must be the same.
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    53
 * <br>
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    54
 * If the localised text for given id is not found, ResourceLoader
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    55
 * returns the id itself.
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    56
 */
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    57
abstract public class ResourceLoader
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    58
{
49
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
    59
    /** AVKON UI identifier. */
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    60
    protected static final int AVKON = 1;
49
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
    61
    /** QT UI identifier. */
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    62
    protected static final int QT = 2;
49
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
    63
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    64
    /** Separator in text id, resource filename, and prefix strings. */
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    65
    protected static final String SEPARATOR = ",";
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    66
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    67
    /** Map for ResourceLoader instances. */
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    68
    protected static Hashtable iResourceLoaders = new Hashtable();
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    69
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    70
    /**
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    71
     * Flag telling if ResourceLoader has already ensured that
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    72
     * UI thread exists.
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    73
     */
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    74
    private static boolean iUiThreadExists = false;
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    75
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    76
    /*** ----------------------------- PUBLIC ------------------------------ */
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
    77
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    78
    /**
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    79
     * Returns a resource loader instance.
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    80
     *
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    81
     * @param avkonFileName name of the Avkon resource file
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    82
     * @param avkonPrefix prefix added before each id when retrieving
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    83
     * @param qtFileName name of the Qt resource file
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    84
     * @param qtPrefix prefix added before each id when retrieving
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    85
     * @return resource loader instance
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    86
     */
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    87
    synchronized public static ResourceLoader getInstance(
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    88
        String avkonFileName, String avkonPrefix,
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    89
        String qtFileName, String qtPrefix)
49
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
    90
    {
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    91
        ResourceLoader rl = null;
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    92
        if (getLocaleIdQt() == null || qtFileName == null)
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    93
        {
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    94
            rl = ResourceLoaderAvkon.getInstance(avkonFileName, avkonPrefix);
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    95
        }
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    96
        else
49
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
    97
        {
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    98
            try
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
    99
            {
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   100
                rl = ResourceLoaderQt.getInstance(qtFileName, qtPrefix);
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   101
            }
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   102
            catch (Throwable t)
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   103
            {
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   104
                Logger.WLOG(Logger.EUtils,
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   105
                            "ResourceLoader: Creating ResourceLoaderQt for " +
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   106
                            qtFileName + " failed: " + t);
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   107
            }
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   108
            if (rl == null)
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   109
            {
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   110
                rl = ResourceLoaderAvkon.getInstance(
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   111
                    avkonFileName, avkonPrefix, qtFileName, qtPrefix);
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   112
            }
49
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   113
        }
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   114
        return rl;
49
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   115
    }
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   116
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   117
    /**
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   118
     * Returns a resource loader instance.
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   119
     *
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   120
     * @param resourceName comma separated list of resource file names
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   121
     * @param prefix comma separated list of prefixes added before each
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   122
     * id when retrieving
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   123
     * @return resource loader instance
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   124
     */
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   125
    synchronized public static ResourceLoader getInstance(
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   126
        String resourceName, String prefix)
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   127
    {
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   128
        if (getLocaleIdQt() == null)
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   129
        {
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   130
            return getInstance(resourceName, prefix, null, null);
49
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   131
        }
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   132
        else
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   133
        {
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   134
            return getInstance(resourceName, prefix, resourceName, prefix);
49
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   135
        }
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   136
    }
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   137
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   138
    /**
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   139
     * Get a string formatter of a given resource id.
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   140
     *
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   141
     * @param id comma separated list of resource ids
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   142
     * @return formatter instance
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   143
     * @see Formatter
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   144
     */
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   145
    public abstract Formatter format(String id);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   146
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   147
    /**
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   148
     * Get a string formatter of a given resource id.
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   149
     *
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   150
     * @param id resource id
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   151
     * @return formatter instance
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   152
     * @see Formatter
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   153
     */
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   154
    public abstract Formatter format(Id id);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   155
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   156
    /**
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   157
     * Formats localised text with specified parameters from an array.
49
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   158
     *
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   159
     * @param id comma separated list of resource ids
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   160
     * @param textParameters parameters to be filled into the text
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   161
     * @return localised text formatted with the provided parameters
49
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   162
     * @see Formatter
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   163
     */
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   164
    public abstract String format(String id, Object[] textParameters);
49
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   165
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   166
    /**
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   167
     * Formats localised text with specified parameters from an array.
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   168
     *
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   169
     * @param id resource id
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   170
     * @param textParameters parameters to be filled into the text
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   171
     * @return localised text formatted with the provided parameters
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   172
     * @see Formatter
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   173
     */
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   174
    public abstract String format(Id id, Object[] textParameters);
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   175
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   176
    /**
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   177
     * Gets the locale ID currently being used on the phone.
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   178
     * This can be used e.g. to load a localized icon file, by
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   179
     * adding the locale id as suffix.
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   180
     *
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   181
     * @return Locale ID as provided by the platform
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   182
     */
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   183
    public static String getLocaleId()
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   184
    {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   185
        int localeId = _getLocaleId();
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   186
        if (localeId > 0)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   187
        {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   188
            if (localeId < 10)
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   189
            {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   190
                // Ensure that the returned locale ID has at least two digits.
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   191
                return "0" + Integer.toString(localeId);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   192
            }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   193
            else
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   194
            {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   195
                return Integer.toString(localeId);
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   196
            }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   197
        }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   198
        return "sc";
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   199
    }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   200
49
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   201
    /**
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   202
     * Return locale id string on Qt platform.
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   203
     *
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   204
     * @return Qt Locale Id String, null if not in Qt.
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   205
     */
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   206
    public static String getLocaleIdQt()
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   207
    {
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   208
        if (!iUiThreadExists)
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   209
        {
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   210
            // Do something in UI thread to ensure that it exists
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   211
            // before _getLocaleIdQt() is called. If _getLocaleIdQt()
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   212
            // has been called before creating QApplication,
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   213
            // QApplication creation will panic.
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   214
            try
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   215
            {
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   216
                CoreUi.runInSyncUiThread(new Runnable() {
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   217
                    public void run()
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   218
                    {
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   219
                        iUiThreadExists = true;
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   220
                    }
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   221
                });
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   222
            }
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   223
            catch (Throwable t)
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   224
            {
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   225
                // Assume that UI thread already exists.
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   226
                iUiThreadExists = true;
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   227
            }
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   228
        }
49
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   229
        return _getLocaleIdQt();
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   230
    }
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   231
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   232
    /**
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   233
     * Releases resources and destroys all ResourceLoader instances.
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   234
     */
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   235
    synchronized public static void destroyAll()
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   236
    {
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   237
        Enumeration e = iResourceLoaders.keys();
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   238
        while (e.hasMoreElements())
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   239
        {
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   240
            String key = (String)e.nextElement();
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   241
            ResourceLoader rl = (ResourceLoader)iResourceLoaders.get(key);
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   242
            if (rl instanceof ResourceLoaderQt)
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   243
            {
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   244
                ((ResourceLoaderQt)rl).destroy();
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   245
            }
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   246
        }
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   247
        iResourceLoaders.clear();
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   248
    }
49
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   249
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   250
    /*** ----------------------------- PRIVATE ---------------------------- */
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   251
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   252
    /**
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   253
     * Default constructor.
72
1f0034e370aa v2.2.15_1
hgs
parents: 67
diff changeset
   254
     */
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   255
    protected ResourceLoader()
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   256
    {
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   257
    }
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   258
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   259
    /*** ----------------------------- NATIVE ----------------------------- */
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   260
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   261
    /**
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   262
     * Get device language code.
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   263
     *
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   264
     * @return languege code.
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   265
     */
80
d6dafc5d983f v2.2.19_1
hgs
parents: 72
diff changeset
   266
    private static native int _getLocaleId();
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   267
49
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   268
    /**
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   269
     * Get Locale Id on Qt platform.
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   270
     *
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   271
     * @return locale Id string. If not in Qt null.
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   272
     */
35baca0e7a2e v2.2.3_1
hgs
parents: 21
diff changeset
   273
    private static native String _getLocaleIdQt();
21
2a9601315dfc Revision: v2.1.22
Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
parents:
diff changeset
   274
}