Rebased ref, commits from common ancestor: commit fc5c6e10757c7bf05e4f95bc190713ba2c4e43f7 Author: Pranav Kant <pran...@gnome.org> Date: Tue Jul 7 00:30:41 2015 +0530
lokdocview: [WIP] Superfluous signals Callback always gets invoked after the load finishes. So, lets use that. Change-Id: Ifa221684c7e6f286fe3434119ae5f21e2e02ea37 diff --git a/include/LibreOfficeKit/LibreOfficeKitGtk.h b/include/LibreOfficeKit/LibreOfficeKitGtk.h index d536e4a..ec28348 100644 --- a/include/LibreOfficeKit/LibreOfficeKitGtk.h +++ b/include/LibreOfficeKit/LibreOfficeKitGtk.h @@ -45,7 +45,7 @@ GtkWidget* lok_doc_view_new (const gchar* GCancellable *cancellable, GError **error); -gboolean lok_doc_view_open_document (LOKDocView* pDocView, +void lok_doc_view_open_document (LOKDocView* pDocView, const gchar* pPath, GCancellable* cancellable, GAsyncReadyCallback callback, diff --git a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx index fed62c4..af3ba41 100644 --- a/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx +++ b/libreofficekit/qa/gtktiledviewer/gtktiledviewer.cxx @@ -382,15 +382,17 @@ static void changePartMode( GtkWidget* pSelector, gpointer /* pItem */ ) } } - -static void loadStarted(LOKDocView* pDocView, gpointer pData) +static void openDocumentCallback (GObject* source_object, GAsyncResult* res, gpointer /*userdata*/) { - g_info ("load started"); -} + LOKDocView* pDocView1 = LOK_DOC_VIEW (source_object); + GError* error = NULL; + GList *focusChain = NULL; -static void loadFinished(LOKDocView* pDocView, gboolean status, gpointer pData) -{ - g_info ("load finished"); + if (!lok_doc_view_open_document_finish(pDocView1, res, &error)) + { + g_warning ("Error occurred while opening the document : %s", error->message); + g_error_free (error); + } populatePartSelector(); populatePartModeSelector( GTK_COMBO_BOX_TEXT(pPartModeComboBox) ); @@ -398,29 +400,10 @@ static void loadFinished(LOKDocView* pDocView, gboolean status, gpointer pData) g_signal_connect(G_OBJECT(pPartModeComboBox), "changed", G_CALLBACK(changePartMode), 0); g_signal_connect(G_OBJECT(pPartSelector), "changed", G_CALLBACK(changePart), 0); - GList *focusChain = NULL; - focusChain = g_list_append( focusChain, pDocView ); + focusChain = g_list_append( focusChain, pDocView1 ); gtk_container_set_focus_chain ( GTK_CONTAINER (pVBox), focusChain ); } -static void open_document_cb (GObject* source_object, GAsyncResult* res, gpointer userdata) -{ - LOKDocView* pDocView = LOK_DOC_VIEW (source_object); - GError* error = NULL; - - gboolean result = lok_doc_view_open_document_finish(pDocView, res, &error); - if (result){ - g_info ("open_document results to true"); - }else - g_info ("open document results to false"); - - if (error != NULL) - { - g_warning ("Error occurred while opening the document : %s", error->message); - g_error_free (error); - } -} - int main( int argc, char* argv[] ) { if( argc < 3 || @@ -571,9 +554,6 @@ int main( int argc, char* argv[] ) g_signal_connect(pDocView, "part-changed", G_CALLBACK(signalPart), NULL); g_signal_connect(pDocView, "hyperlink-clicked", G_CALLBACK(signalHyperlink), NULL); - g_signal_connect(pDocView, "load-started", G_CALLBACK(loadStarted), NULL); - g_signal_connect(pDocView, "load-finished", G_CALLBACK(loadFinished), NULL); - // Scrolled window for DocView pScrolledWindow = gtk_scrolled_window_new(0, 0); gtk_widget_set_hexpand (pScrolledWindow, TRUE); @@ -586,9 +566,7 @@ int main( int argc, char* argv[] ) // Hide the findbar by default. gtk_widget_hide(pFindbar); - int bOpened = lok_doc_view_open_document( LOK_DOC_VIEW(pDocView), argv[2], NULL, open_document_cb, pDocView ); - if (!bOpened) - g_error("main: lok_doc_view_open_document() failed"); + lok_doc_view_open_document( LOK_DOC_VIEW(pDocView), argv[2], NULL, openDocumentCallback, pDocView ); gtk_main(); diff --git a/libreofficekit/source/gtk/lokdocview.cxx b/libreofficekit/source/gtk/lokdocview.cxx index f9b332c..64aeb89 100644 --- a/libreofficekit/source/gtk/lokdocview.cxx +++ b/libreofficekit/source/gtk/lokdocview.cxx @@ -337,19 +337,23 @@ static gboolean globalCallback (gpointer pData) { CallbackData* pCallback = static_cast<CallbackData*>(pData); + LOKDocViewPrivate* priv = static_cast<LOKDocViewPrivate*>(lok_doc_view_get_instance_private (pCallback->m_pDocView)); switch (pCallback->m_nType) { case LOK_CALLBACK_STATUS_INDICATOR_START: { + priv->m_nLoadProgress = 0; } break; case LOK_CALLBACK_STATUS_INDICATOR_SET_VALUE: { + priv->m_nLoadProgress = std::stoi(pCallback->m_aPayload); } break; case LOK_CALLBACK_STATUS_INDICATOR_FINISH: { + priv->m_nLoadProgress = 100; } break; default: @@ -1298,34 +1302,6 @@ static void lok_doc_view_class_init (LOKDocViewClass* pClass) | G_PARAM_STATIC_STRINGS))); /** - * LOKDocView::load-started: - * @pDocView: the #LOKDocView on which the signal is emitted - */ - doc_view_signals[LOAD_STARTED] = - g_signal_new("load-started", - G_TYPE_FROM_CLASS (pGObjectClass), - G_SIGNAL_RUN_LAST, - 0, - NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); - - /** - * LOKDocView::load-finished: - * @pDocView: the #LOKDocView on which the signal is emitted - * @bStatus: whether the load finished successfully or it failed - */ - doc_view_signals[LOAD_FINISHED] = - g_signal_new("load-finished", - G_TYPE_FROM_CLASS(pGObjectClass), - G_SIGNAL_RUN_LAST, - 0, - NULL, NULL, - g_cclosure_marshal_VOID__BOOLEAN, - G_TYPE_NONE, 1, - G_TYPE_BOOLEAN); - - /** * LOKDocView::edit-changed: * @pDocView: the #LOKDocView on which the signal is emitted * @bEdit: the new edit value of the view @@ -1419,7 +1395,8 @@ lok_doc_view_new (const gchar* pPath, GCancellable *cancellable, GError **error) /** * lok_doc_view_open_document_finish: * @pDocView: The #LOKDocView instance - * @pPath: The path of the document that #LOKDocView widget should try to open + * @res: + * @error: * * Returns: %TRUE if the document is loaded succesfully, %FALSE otherwise */ @@ -1448,8 +1425,6 @@ lok_doc_view_open_document_func (GTask* task, gpointer source_object, gpointer t priv->m_pDocument = 0; } - g_signal_emit(pDocView, doc_view_signals[LOAD_STARTED], 0); - priv->m_pOffice->pClass->registerCallback(priv->m_pOffice, globalCallbackWorker, pDocView); priv->m_pDocument = priv->m_pOffice->pClass->documentLoad( priv->m_pOffice, priv->m_aDocPath ); if ( !priv->m_pDocument ) @@ -1457,7 +1432,6 @@ lok_doc_view_open_document_func (GTask* task, gpointer source_object, gpointer t // FIXME: should have a GError parameter and populate it. char *pError = priv->m_pOffice->pClass->getError( priv->m_pOffice ); fprintf( stderr, "Error opening document '%s'\n", pError ); - g_signal_emit(pDocView, doc_view_signals[LOAD_FINISHED], 0, false/* implies failure*/); g_task_return_new_error(task, 0, 0, pError); } else @@ -1483,8 +1457,6 @@ lok_doc_view_open_document_func (GTask* task, gpointer source_object, gpointer t nDocumentHeightPixels); gtk_widget_set_can_focus(GTK_WIDGET(pDocView), TRUE); gtk_widget_grab_focus(GTK_WIDGET(pDocView)); - g_signal_emit(pDocView, doc_view_signals[LOAD_FINISHED], 0, true/* implies - success */); g_task_return_boolean (task, true); } } @@ -1496,7 +1468,7 @@ lok_doc_view_open_document_func (GTask* task, gpointer source_object, gpointer t * * Returns: %TRUE if the document is loaded succesfully, %FALSE otherwise */ -SAL_DLLPUBLIC_EXPORT gboolean +SAL_DLLPUBLIC_EXPORT void lok_doc_view_open_document (LOKDocView* pDocView, const gchar* pPath, GCancellable* cancellable, @@ -1513,8 +1485,6 @@ lok_doc_view_open_document (LOKDocView* pDocView, g_task_run_in_thread(task, lok_doc_view_open_document_func); g_object_unref(task); - - return true; } /** _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits