Welcome to mirror list, hosted at ThFree Co, Russian Federation.

BookmarkCategory.cpp « data « bookmarks « maps « mapswithme « com « jni « android - github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 4421543bdc9cd4e9fff9195afe18512c029878b8 (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
#include "../../Framework.hpp"

#include "platform/measurement_utils.hpp"

#include "../../../core/jni_helper.hpp"

namespace
{
  ::Framework * frm() { return g_framework->NativeFramework(); }

  BookmarkCategory * getBmCategory(jint c)
  {
    BookmarkCategory * pCat = frm()->GetBmCategory(c);
    ASSERT(pCat, ("Category not found", c));
    return pCat;
  }
}

extern "C"
{

  JNIEXPORT jboolean JNICALL
  Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_isVisible(
      JNIEnv * env, jobject thiz, jint id)
  {
    return getBmCategory(id)->IsVisible();
  }

  JNIEXPORT void JNICALL
  Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_setVisibility(
      JNIEnv * env, jobject thiz, jint id, jboolean b)
  {
    BookmarkCategory * pCat = getBmCategory(id);
    pCat->SetVisible(b);
    pCat->SaveToKMLFile();
  }

  JNIEXPORT void JNICALL
  Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_setName(
      JNIEnv * env, jobject thiz, jint id, jstring n)
  {
    BookmarkCategory * pCat = getBmCategory(id);
    pCat->SetName(jni::ToNativeString(env, n));
    pCat->SaveToKMLFile();
  }

  JNIEXPORT jstring JNICALL
  Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_getName(
       JNIEnv * env, jobject thiz, jint id)
  {
    return jni::ToJavaString(env, getBmCategory(id)->GetName());
  }

  JNIEXPORT jint JNICALL
  Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_getSize(
       JNIEnv * env, jobject thiz, jint id)
  {
    BookmarkCategory * category = getBmCategory(id);
    return category->GetBookmarksCount() + category->GetTracksCount();
  }

  JNIEXPORT jint JNICALL
  Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_getBookmarksCount(
       JNIEnv * env, jobject thiz, jint id)
  {
    return getBmCategory(id)->GetBookmarksCount();
  }

  JNIEXPORT jint JNICALL
  Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_getTracksCount(
       JNIEnv * env, jobject thiz, jint id)
  {
    return getBmCategory(id)->GetTracksCount();
  }

  JNIEXPORT jobject JNICALL
  Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_getBookmark(
       JNIEnv * env, jobject thiz, jint id, jint index, jclass bookmarkClazz)
  {
    // Bookmark(int categoryId, int bookmarkId, String name)
    jmethodID static const cId = env->GetMethodID(bookmarkClazz, "<init>", "(IILjava/lang/String;)V");

    BookmarkCategory * category = getBmCategory(id);
    Bookmark const * nBookmark = category->GetBookmark(index);

    ASSERT(nBookmark, ("Bookmark must not be null with index:)", index));

    jobject jBookmark = env->NewObject(bookmarkClazz, cId,
                                id, index, jni::ToJavaString(env, nBookmark->GetName()));

    g_framework->InjectMetadata(env, bookmarkClazz, jBookmark, nBookmark);

    return jBookmark;
  }

  static uint32_t shift(uint32_t v, uint8_t bitCount) { return v << bitCount; }

  JNIEXPORT jobject JNICALL
  Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_getTrack(
       JNIEnv * env, jobject thiz, jint id, jint index, jclass trackClazz)
  {
    // Track(int trackId, int categoryId, String name, String lengthString, int color)
    static jmethodID cId = env->GetMethodID(trackClazz, "<init>",
        "(IILjava/lang/String;Ljava/lang/String;I)V");

    BookmarkCategory * category = getBmCategory(id);
    Track const * nTrack = category->GetTrack(index);

    ASSERT(nTrack, ("Track must not be null with index:)", index));

    string formattedLenght;
    MeasurementUtils::FormatDistance(nTrack->GetLengthMeters(), formattedLenght);

    graphics::Color nColor = nTrack->GetMainColor();

    jint androidColor = shift(nColor.a, 24) +
                        shift(nColor.r, 16) +
                        shift(nColor.g, 8) +
                        nColor.b;

    return env->NewObject(trackClazz, cId,
        index, id, jni::ToJavaString(env, nTrack->GetName()),
        jni::ToJavaString(env, formattedLenght), androidColor);
  }
}