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;
}
示例#2
0
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();
}
示例#4
0
void Logbook::setHome(const linkItemId &bookmarkItemId) {
   BookmarkItem *item = getBookmark(bookmarkItemId);
   if ( item ) { // Ensuring the item actually exists
      setHome(*item);
      delete item;
   }
}
示例#5
0
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());
}
示例#6
0
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);
}
示例#7
0
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);
}
示例#9
0
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);
}
示例#10
0
BookmarksItem* BookmarksModel::getBookmark(const QModelIndex &index) const
{
	return getBookmark(index.data(IdentifierRole).toULongLong());
}
示例#11
0
BookmarkItem * Logbook::getHome() {
   QDEBUG("Logbook::getHome()");
   return getBookmark( m_settings.value( SETTINGS_KEY_HOME_BOOKMARK_ID ).toInt() );
}
示例#12
0
bool Logbook::isHome(const QString &url) {
   return isHome(getBookmark(url)->id);
}
示例#13
0
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));
}
示例#14
0
JNIEXPORT jdouble JNICALL
Java_com_mapswithme_maps_bookmarks_data_Bookmark_nativeGetScale(
     JNIEnv * env, jobject thiz, jint cat, jlong bmk)
{
  return getBookmark(cat, bmk)->GetScale();
}
示例#15
0
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());
}
示例#16
0
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());
}