browsercore/appfw/Api/Managers/bookmarkscontroller.cpp
author hgs
Fri, 17 Sep 2010 12:11:40 -0400
changeset 12 afcd8e6d025b
child 14 6aeb7a756187
permissions -rw-r--r--
201037
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
 * bookmarkscontroller.cpp
hgs
parents:
diff changeset
     3
 *
hgs
parents:
diff changeset
     4
 *  Created on: Aug 25, 2010
hgs
parents:
diff changeset
     5
 *      Author: mmoretti
hgs
parents:
diff changeset
     6
 */
hgs
parents:
diff changeset
     7
hgs
parents:
diff changeset
     8
hgs
parents:
diff changeset
     9
#include <QObject>
hgs
parents:
diff changeset
    10
#include <QWidget>
hgs
parents:
diff changeset
    11
#include <QDebug>
hgs
parents:
diff changeset
    12
hgs
parents:
diff changeset
    13
#include "bookmarkscontroller.h"
hgs
parents:
diff changeset
    14
#include "BookmarksManager.h"
hgs
parents:
diff changeset
    15
#include "BookmarkFav.h"
hgs
parents:
diff changeset
    16
#include "BookmarkResults.h"
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
BookmarksController::BookmarksController(QWidget *parent) :
hgs
parents:
diff changeset
    19
	    QObject(parent)
hgs
parents:
diff changeset
    20
{
hgs
parents:
diff changeset
    21
	setObjectName("bookmarksController");
hgs
parents:
diff changeset
    22
	m_bm = new BookmarksManager(parent);
hgs
parents:
diff changeset
    23
}
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
BookmarksController::~BookmarksController() {
hgs
parents:
diff changeset
    26
	// TODO Auto-generated destructor stub
hgs
parents:
diff changeset
    27
}
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
BookmarksController* BookmarksController::getSingleton()
hgs
parents:
diff changeset
    30
{
hgs
parents:
diff changeset
    31
    static BookmarksController* singleton = 0;
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
    if(!singleton){
hgs
parents:
diff changeset
    34
           singleton = new BookmarksController;
hgs
parents:
diff changeset
    35
    }
hgs
parents:
diff changeset
    36
hgs
parents:
diff changeset
    37
    //assert(singleton);
hgs
parents:
diff changeset
    38
    return singleton;
hgs
parents:
diff changeset
    39
}
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
int BookmarksController::addBookmark(QString title, QString URL)
hgs
parents:
diff changeset
    43
{
hgs
parents:
diff changeset
    44
	int bmid = m_bm->addBookmark(title, URL);
hgs
parents:
diff changeset
    45
//	qDebug() << __PRETTY_FUNCTION__ << "added bookmark" << title << URL  << bmid << "emitting bookmarkAdded";
hgs
parents:
diff changeset
    46
	emit bookmarkAdded(title, URL, bmid);
hgs
parents:
diff changeset
    47
	return(bmid);
hgs
parents:
diff changeset
    48
}
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
int BookmarksController::modifyBookmark(int origBookmarkId, QString newTitle, QString newURL)
hgs
parents:
diff changeset
    51
{
hgs
parents:
diff changeset
    52
	int retstat = m_bm->modifyBookmark(origBookmarkId, newTitle, newURL);
hgs
parents:
diff changeset
    53
	emit bookmarkModified(newTitle, newURL, origBookmarkId);
hgs
parents:
diff changeset
    54
	return retstat;
hgs
parents:
diff changeset
    55
}
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
int BookmarksController::deleteBookmark(int bookmarkId)
hgs
parents:
diff changeset
    58
{
hgs
parents:
diff changeset
    59
	return m_bm->deleteBookmark(bookmarkId);
hgs
parents:
diff changeset
    60
}
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
int BookmarksController::clearAll()
hgs
parents:
diff changeset
    63
{
hgs
parents:
diff changeset
    64
	int retstat = m_bm->clearAll();
hgs
parents:
diff changeset
    65
	emit bookmarksCleared();
hgs
parents:
diff changeset
    66
	return retstat;
hgs
parents:
diff changeset
    67
}
hgs
parents:
diff changeset
    68
hgs
parents:
diff changeset
    69
int BookmarksController::findAllBookmarks()
hgs
parents:
diff changeset
    70
{
hgs
parents:
diff changeset
    71
	m_bmr = m_bm->findAllBookmarks();
hgs
parents:
diff changeset
    72
	if (!m_bmr)
hgs
parents:
diff changeset
    73
		return -1;
hgs
parents:
diff changeset
    74
	return(0);
hgs
parents:
diff changeset
    75
}
hgs
parents:
diff changeset
    76
hgs
parents:
diff changeset
    77
// This is only necessary because JS can't handle null objects being returned by nextBookmark
hgs
parents:
diff changeset
    78
bool BookmarksController::hasMoreBookmarks()
hgs
parents:
diff changeset
    79
{
hgs
parents:
diff changeset
    80
	if (!m_bmr)
hgs
parents:
diff changeset
    81
		return false;
hgs
parents:
diff changeset
    82
hgs
parents:
diff changeset
    83
	m_bmf = m_bmr->nextBookmark();
hgs
parents:
diff changeset
    84
	if (!m_bmf) {
hgs
parents:
diff changeset
    85
		delete m_bmr;
hgs
parents:
diff changeset
    86
		m_bmr = 0;
hgs
parents:
diff changeset
    87
		return false;
hgs
parents:
diff changeset
    88
	}
hgs
parents:
diff changeset
    89
hgs
parents:
diff changeset
    90
	return true;
hgs
parents:
diff changeset
    91
}
hgs
parents:
diff changeset
    92
hgs
parents:
diff changeset
    93
hgs
parents:
diff changeset
    94
QObject *BookmarksController::nextBookmark()
hgs
parents:
diff changeset
    95
{
hgs
parents:
diff changeset
    96
	return m_bmf;
hgs
parents:
diff changeset
    97
}
hgs
parents:
diff changeset
    98
hgs
parents:
diff changeset
    99
int BookmarksController::reorderBookmark(int bookmarkID, int newIndex)
hgs
parents:
diff changeset
   100
{
hgs
parents:
diff changeset
   101
	return m_bm->reorderBookmark(bookmarkID, newIndex);
hgs
parents:
diff changeset
   102
}
hgs
parents:
diff changeset
   103
hgs
parents:
diff changeset
   104
QObject *BookmarksController::findBookmark(int bookmarkID)
hgs
parents:
diff changeset
   105
{
hgs
parents:
diff changeset
   106
	return m_bm->findBookmark(bookmarkID);
hgs
parents:
diff changeset
   107
}
hgs
parents:
diff changeset
   108
hgs
parents:
diff changeset
   109
void BookmarksController::showBookmarkEditDialog(QString title, QString url, int bookmarkID)
hgs
parents:
diff changeset
   110
{
hgs
parents:
diff changeset
   111
	// This is SOOOO convoluted; in our js, in order to call a function in another scope, we have to call a function here that emits a signal that is connected to that function, wtf?
hgs
parents:
diff changeset
   112
	emit launchBookmarkEditDailog(title, url, bookmarkID);
hgs
parents:
diff changeset
   113
}
hgs
parents:
diff changeset
   114
hgs
parents:
diff changeset
   115
// TODO add tag stuff when we get a ui for it