bool BookmarksModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) { const BookmarkType type = static_cast<BookmarkType>(parent.data(TypeRole).toInt()); if (type == FolderBookmark || type == RootBookmark || type == TrashBookmark) { const QModelIndex index = data->property("x-item-index").toModelIndex(); if (index.isValid()) { return moveBookmark(getBookmark(index), getBookmark(parent), row); } else if (data->hasUrls()) { const QList<QUrl> urls(data->urls()); for (int i = 0; i < urls.count(); ++i) { addBookmark(UrlBookmark, 0, urls.at(i), (data->property("x-url-title").toString().isEmpty() ? urls.at(i).toString() : data->property("x-url-title").toString()), getBookmark(parent), row); } return true; } return QStandardItemModel::dropMimeData(data, action, row, column, parent); } return false; }
void Logbook::setHome(const QString &url) { BookmarkItem *item = getBookmark(url); if ( !item ) { addBookmark(QString(), url); item = getBookmark(url); } if ( item ) { // Ensuring the item actually exists setHome(*item); delete item; } }
void BookmarksModel::restoreBookmark(BookmarksItem *bookmark) { if (!bookmark) { return; } BookmarksItem *formerParent = (m_trash.contains(bookmark) ? getBookmark(m_trash[bookmark].first) : getRootItem()); if (!formerParent || static_cast<BookmarkType>(formerParent->data(TypeRole).toInt()) != FolderBookmark) { formerParent = getRootItem(); } if (m_trash.contains(bookmark)) { formerParent->insertRow(m_trash[bookmark].second, bookmark->parent()->takeRow(bookmark->row())); m_trash.remove(bookmark); } else { formerParent->appendRow(bookmark->parent()->takeRow(bookmark->row())); } readdBookmarkUrl(bookmark); BookmarksItem *trashItem = getTrashItem(); trashItem->setEnabled(trashItem->rowCount() > 0); emit bookmarkModified(bookmark); emit bookmarkRestored(bookmark); emit modelModified(); }
void Logbook::setHome(const linkItemId &bookmarkItemId) { BookmarkItem *item = getBookmark(bookmarkItemId); if ( item ) { // Ensuring the item actually exists setHome(*item); delete item; } }
JNIEXPORT jstring JNICALL Java_com_mapswithme_maps_bookmarks_data_Bookmark_nativeGetAddress( JNIEnv * env, jobject thiz, jint catId, jlong bmkId) { Bookmark const * bmk = getBookmark(catId, bmkId); search::AddressInfo const address = g_framework->NativeFramework()->GetAddressInfoAtPoint(MercatorBounds::FromLatLon(bmk->GetLatLon())); return jni::ToJavaString(env, address.FormatAddress()); }
JNIEXPORT void JNICALL Java_com_mapswithme_maps_bookmarks_data_Bookmark_nativeSetBookmarkParams( JNIEnv * env, jobject thiz, jint cat, jlong bmk, jstring name, jstring type, jstring descr) { Bookmark const * p = getBookmark(cat, bmk); // initialize new bookmark BookmarkData bm(jni::ToNativeString(env, name), jni::ToNativeString(env, type)); bm.SetDescription(descr ? jni::ToNativeString(env, descr) : p->GetDescription()); g_framework->ReplaceBookmark(BookmarkAndCategory(bmk, cat), bm); }
void Logbook::addBookmark(const QString &title, const QString &url, const linkItemId &bookmarkItemId) { QDEBUG_EXP("Logbook::addBookmark()", "title: " << title << " url: " << url << " id: " << bookmarkItemId); if ( bookmarkItemId != LINK_ITEM_ID_UNDEFINED ) { // Update Bookmark QDEBUG_EXP("Logbook::addBookmark()", "Provided Bookmark Id -> Updating"); m_query.prepare(UPDATE_BOOKMARK_SQL_BY_ID); m_query.bindValue(0, url); m_query.bindValue(1, title); m_query.bindValue(2, bookmarkItemId); } else { // Insert Bookmark, or Update it if ( NULL != getBookmark(url) ) { QDEBUG_EXP("Logbook::addBookmark()", "Updating Bookmark"); m_query.prepare(UPDATE_BOOKMARK_SQL_BY_URL); m_query.bindValue(0, title); m_query.bindValue(1, url); } else { QDEBUG_EXP("Logbook::addBookmark()", "Inserting Bookmark"); m_query.prepare(INSERT_BOOKMARK_SQL); m_query.bindValue(0, url); m_query.bindValue(1, title); } } // Let's query! if ( !m_query.exec() ) { QWARNING_EXP("Logbook::addBookmark()", "Query exec error: " << m_query.lastError().text() << " Query: " << m_query.lastQuery()); } else { emit bookmarkChanged( getBookmark(url)->id ); } }
BookmarksItem* BookmarksModel::getItem(const QString &path) const { if (path == QLatin1String("/")) { return getRootItem(); } if (path.startsWith(QLatin1Char('#'))) { return getBookmark(path.mid(1).toULongLong()); } QStandardItem *item = getRootItem(); const QStringList directories = path.split(QLatin1Char('/'), QString::SkipEmptyParts); for (int i = 0; i < directories.count(); ++i) { bool found = false; for (int j = 0; j < item->rowCount(); ++j) { if (item->child(j) && item->child(j)->data(Qt::DisplayRole) == directories.at(i)) { item = item->child(j); found = true; break; } } if (!found) { return NULL; } } return dynamic_cast<BookmarksItem*>(item); }
BookmarksModel::Bookmark* BookmarksManager::getBookmark(const QString &text) { ensureInitialized(); if (text.startsWith(QLatin1Char('#'))) { return m_model->getBookmark(text.mid(1).toULongLong()); } if (text.startsWith(QLatin1String("bookmarks:"))) { return (text.startsWith(QLatin1String("bookmarks:/")) ? m_model->getBookmarkByPath(text.mid(11)) : getBookmark(text.mid(10).toULongLong())); } return m_model->getBookmarkByKeyword(text); }
BookmarksItem* BookmarksModel::getBookmark(const QModelIndex &index) const { return getBookmark(index.data(IdentifierRole).toULongLong()); }
BookmarkItem * Logbook::getHome() { QDEBUG("Logbook::getHome()"); return getBookmark( m_settings.value( SETTINGS_KEY_HOME_BOOKMARK_ID ).toInt() ); }
bool Logbook::isHome(const QString &url) { return isHome(getBookmark(url)->id); }
JNIEXPORT jstring JNICALL Java_com_mapswithme_maps_bookmarks_data_Bookmark_nativeEncode2Ge0Url( JNIEnv * env, jobject thiz, jint cat, jlong bmk, jboolean addName) { return jni::ToJavaString(env, frm()->CodeGe0url(getBookmark(cat, bmk), addName)); }
JNIEXPORT jdouble JNICALL Java_com_mapswithme_maps_bookmarks_data_Bookmark_nativeGetScale( JNIEnv * env, jobject thiz, jint cat, jlong bmk) { return getBookmark(cat, bmk)->GetScale(); }
JNIEXPORT jobject JNICALL Java_com_mapswithme_maps_bookmarks_data_Bookmark_nativeGetXY( JNIEnv * env, jobject thiz, jint cat, jlong bmk) { return jni::GetNewParcelablePointD(env, getBookmark(cat, bmk)->GetPivot()); }
JNIEXPORT jstring JNICALL Java_com_mapswithme_maps_bookmarks_data_Bookmark_nativeGetIcon( JNIEnv * env, jobject thiz, jint cat, jlong bmk) { return jni::ToJavaString(env, getBookmark(cat, bmk)->GetType()); }