InvokeManager.queryInvokeTargets
Howdy,
Is it possible to list all the targets of the invocation, regardless the type mime or uri?
I tried the passage * / * and nulls in the InvokeManager.queryInvokeTargets function, but it does not work.
Basically, I need to get all the apps that have registered a bb.action.OPEN or the bb.action.SHARE with their target details in name, icon and invocation. The use case and performance criteria call for questioning the initial targets of the call, until we know what kind of files that we find.
It is not possible. Specifying * / * in the query search targets that support all types of opening. What you need is a way to discover dynamically than all the targets and their supported mime types. Invocation framework is designed so that you don't need to know who supports what. You simply call and if there is a target, it will be displayed. Otherwise you can gracefully fail or prompt the user accordingly. Indeed, if there is a way to do this, it would break the purpose of the framework of the call at first.
Tags: BlackBerry Developers
Similar Questions
-
How do to call the BlackBerry menu form share an Adobe Air application?
Hello
I'm looking for a tutorial or demo code that describes how to call the BlackBerry menu sharing an Adobe Air based application.
I found a tutorial of waterfalls for it - there's one for Adobe Air too?
- http://bbcascadescode.tumblr.com/post/38998702671/invoke-share-for-bb10This is a screenshot of the Action menu:
Advice welcome!
Here you go:
package com.lib.playbook.invocation { import com.lib.playbook.controls.List; import com.lib.playbook.pages.TitlePage; import com.lib.playbook.renderers.IconListRenderer; import flash.events.Event; import flash.events.IEventDispatcher; import qnx.events.InvokeEvent; import qnx.events.InvokeQueryTargetEvent; import qnx.fuse.ui.core.Action; import qnx.fuse.ui.events.ActionEvent; import qnx.fuse.ui.events.ListEvent; import qnx.invoke.ActionQuery; import qnx.invoke.InvokeManager; import qnx.invoke.InvokeRequest; import qnx.invoke.InvokeTarget; public class InvokeSearchPage extends TitlePage { private var request : InvokeRequest = null; private var targets : List = new List(); ///////////////////////////////////////////////////////////////////////////////////////// public function InvokeSearchPage() { super(); this.title = 'Search With'; this.titlebar.dismissAction = new Action( 'Cancel', null, {id:'cancel'} ); this.titlebar.addEventListener(ActionEvent.ACTION_SELECTED, ActionSelected ); this.targets.cellRenderer = com.lib.playbook.renderers.IconListRenderer; this.targets.addEventListener(ListEvent.ITEM_CLICKED, TargetSelected ); this.targets.rowHeight = 140; this.addChild( this.targets ); } /////////////////////////////////////////////////////////////////////////////////////////// public function filter( request :InvokeRequest ) : void { this.targets.removeAll(); this.request = request; //trace( 'filter ' + request.mimeType ); InvokeManager.invokeManager.addEventListener( InvokeQueryTargetEvent.SUCCESS, TargetsFound ); InvokeManager.invokeManager.queryInvokeTargets( request.mimeType, request.uri, request.action, request.targetOptions ); } /////////////////////////////////////////////////////////////////////////////////////////// private function TargetsFound( event : InvokeQueryTargetEvent ) : void { InvokeManager.invokeManager.removeEventListener(InvokeQueryTargetEvent.SUCCESS, TargetsFound ); //trace( 'TargetsFound' ); var action : ActionQuery; var target : InvokeTarget; for each( action in event.actions ) { for each( target in action.targets ) { this.targets.addItem( { data : target.target, label : target.label, icon : 'file://' + target.icon } ); } } } //////////////////////////////////////////////////////////////////// private function TargetSelected( event :Event ) : void { if( this.targets.selectedIndex >= 0 ) { this.request.target = this.targets.selection; InvokeManager.invokeManager.invoke( this.request ); } } //////////////////////////////////////////////////////////////////// private function ActionSelected( event :ActionEvent ) : void { switch( event.action.data.id ) { case 'cancel' : this.dispatchEvent( new Event( Event.CANCEL ) ); break; } } ////////////////////////////////////////////////////////////////////// override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { super.updateDisplayList( unscaledWidth, unscaledHeight ); this.targets.setPosition( 10, this.top + 10 ); this.targets.setActualSize( unscaledWidth - 20, unscaledHeight - this.targets.y - 10 ); } } }
And the rendering engine:
package com.lib.playbook.renderers { import qnx.fuse.ui.display.Image; import qnx.fuse.ui.listClasses.CellRenderer; public class IconListRenderer extends CellRenderer { private var icon :Image = new Image(); ///////////////////////////////////////////////////////////////////////// public function IconListRenderer() { super(); } /////////////////////////////////////////////////////////////// override protected function onAdded():void { super.onAdded(); this.addChild( this.icon ); } /////////////////////////////////////////////////////////////// override protected function onRemoved():void { super.onRemoved(); this.removeChild( this.icon ); } ///////////////////////////////////////////////////////////////////////////////////// override protected function drawLabel(unscaledWidth:Number, unscaledHeight:Number):void { super.drawLabel( unscaledWidth, unscaledHeight ); if( this.data ) { if( this.data.hasOwnProperty( 'icon' ) && this.data.icon != null ) { this.icon.setImage( this.data.icon ); this.icon.setPosition( 10, 15 );//( unscaledHeight - this.icon.height ) / 2 ); } else { this.icon.setImage( null ); } } this.label.x = 140; this.label.width = unscaledWidth - this.label.x - 20; } } }
references com.lib.playbook our our inner classes, but you should get the approach to apply.
-
Is there a change to use mediaPlayer with InvokeManager?
Hi I used mediaPlayer with InvokeManager to play streaming video
But recently the mediaPlayer is unable to read the file
Perhaps because upgrading to the new operating system
It's my job
void DetailPage::invokeMediaPlayer(QString aUrl) { InvokeManager invokeManager; InvokeRequest request; request.setTarget("sys.mediaplayer.previewer"); request.setAction("bb.action.OPEN"); request.setUri(QUrl(aUrl)); InvokeTargetReply *reply = invokeManager.invoke(request); }
When I read the documentation for the new update (release notes)
Application integration (invocation framework) - in order to adequately support extended characters, the framework of the call games has updated its treatment of URIS to enable clients and targets to better co-ordinate their use of URI. The framework of the appeal now expected valid URIS to spend in their encrypted form to allow the targets to interpret them correctly. For the file URI, handling update ensures that the frame does not change the URI and delivers them as-is. With this change, only receiving targets URIs in invocations should expect to receive coded URIs and are required to decode them.
What I need to change my code?
Previously the job very well
Thank you
Sorry, in fact there are an error on my video webservice.
So, there is nothing wrong with mediaPlayer on new SDK (10.0.9.2318)
Thank you
-
Definition qnx.invoke:InvokeManager could not be found
I'm trying to use some methods of invocation in my application. However, it still fails on the line
import qnx.invoke.InvokeAction
with the message of
Definition qnx.invoke:InvokeManager could not be found
I don't know where this class can be hidden. I use the SDK BB10 gold
Yep, that's where it is (QNXDevice.ane). I was confused by 1) the fact that I have not read about how donkey really works and is packed and 2) the fact that the components of fuse.ui with the exception of hides, live in the qnxui.swc.
I use FlashDevelop, Flash Builder, but once I added the DONKEY device to the library it compiles properly.
BTW I just use FlashDevelop compile to the flushing of the gross errors of syntax & liaison; for device & sim referred
versions that I use the command line. For all those who playback what uses both command line and strikes
This problem, you will need (apparenly) to add the full path to the device DONKEY to your library path options, i.e.
I've added:
-compiler.library-path %BBSDKPATH%\frameworks\libs\qnx\ane\QNXDevice.ane
to my amxmlc command line and all was forgiven. (It comes in a Windows batch file, where the)
backslashes, and % BBSDKPATH % contains the path to my install SDK).
Edit: Note by the compiler docs, "you can specify a directory or individual SWC files." For the
SWC bind to, I just provide the path of the directory. I tried to do for the DONKEY device and it would not take;
I had to put QNXDevice.ane on the tail of the path so that it can compile.
-
Build failed if create an InvokeManager
In the construction of the class, if I again create the InvokeManager, the construction process will be to be failed. It shows only a Red Cross in the project. There is not any suspicion of error by which I can know what is the problem.
If I delete the source line ", m_invokeManager (new InvokeManager (this))"in Gateway.cpp, everything is OK. "
I need to put in place the other libraries in the project or is linked with permission?
Thank you
The source code is as below:
Gateway.HPP
// Default empty project template #ifndef Gateway_HPP_ #define Gateway_HPP_ #include
#include namespace bb { namespace cascades { class Application; }} /*! * @brief Application pane object * *Use this object to create and init app UI, to create context objects, to register the new meta types etc. */ class Gateway : public QObject { Q_OBJECT public: //Gateway(bb::cascades::Application *app); Gateway(QObject *parent = 0); virtual ~Gateway() {} private: // The central object to manage invocations bb::system::InvokeManager* m_invokeManager; }; #endif /* Gateway_HPP_ */ Gateway.cpp
// Default empty project template #include "Gateway.hpp" #include
#include #include #include using namespace bb::cascades; using namespace bb::system; /*Gateway::Gateway(bb::cascades::Application *app) : QObject(app)*/ Gateway::Gateway(QObject *parent) : QObject(parent) , m_invokeManager(new InvokeManager(this)) { // create scene document from main.qml asset // set parent to created document to ensure it exists for the whole application lifetime QmlDocument *qml = QmlDocument::create("asset:///main.qml").parent(this); if (!qml->hasErrors()) { // The application NavigationPane is created from QML. NavigationPane *navPane = qml->createRootObject (); if (navPane) { qml->setContextProperty("_navPane", navPane); // Set the main scene for the application to the NavigationPane. //app->setScene(navPane); Application::instance()->setScene(navPane); } } } The console log
C:\bbndk\host_10_0_9_404\win32\x86\usr\bin\ntoarm-ld: note: '_ZN2bb6system13InvokeManagerC1EP7QObject' is defined in DSO C:/bbndk/target_10_0_9_1673/qnx6/armle-v7/usr/lib/libbbsystem.so.1 so try adding it to the linker command line make[1]: Leaving directory `C:/bbndk/workspace/Gateway/arm' C:/bbndk/target_10_0_9_1673/qnx6/armle-v7/usr/lib/libbbsystem.so.1: could not read symbols: Invalid operation cc: C:/bbndk/host_10_0_9_404/win32/x86/usr/bin/ntoarm-ld caught signal 1 make[2]: *** [o.le-v7-g/Gateway] Error 1 make[1]: *** [debug] Error 2 make: *** [Device-Debug] Error 2
As the beginning of your state of errors, you must link against libbbsystem.so.1.
This is done by adding the following line to your .pro Momentics file:
LIBS += -lbbsystem
-
How to set the title when using InvokeManager (MediaPlayer)
Hi Im using InvokeManager to play the video file (Media Player)
How to change the title when media player to play the video (above)-> it by default uses the name of the file being played
but I want to change this
How to do this?
Thank you
Try this
InvokeManager * invokeManager = new InvokeManager();
InvokeRequest cardRequest;
cardRequest.setTarget ("sys.mediaplayer.previewer");
cardRequest.setAction ("bb.action.OPEN");
cardRequest.setUri ("* video url *");
QVariantMap map;
Map.Insert ("contentTitle", "My title");
QByteArray requestData = bb:psObject::encode (map, NULL);
cardRequest.setData (requestData);
Response InvokeTargetReply * = invokeManager-> invoke (cardRequest);Note: Mark your post as solved, if this solves your problem
-
InvokeManager has not declared in this scope
Hey guys
How are you today?, hoping you're all going well
I have a weird bug that continues to show the material to what I did for me
I did a class, spicific for invocations to my email, twitter account etc... I took the code from the site blackberry like (copy-past) here and made some changes to of course the actions and targets... I have included all classes in the code that I copied as follows:
#include
#include #include but I get these weird errors:
and it's happening for each class included
and I've linked with the library system LIBS +=-lbbsystem
any help with this?
Thank you very much
Space of names that you use?
NICU namespace bb::system;
or
BB::System:InvokeManager * invokeManager;
-
Mail with attachment + sendto: InvokeManager
Anyone could find a way to invoke the email with an attachment and sendto together?
I did a search and saw that some people were having issues with it. I just want to check if someone has found a way.
So far, I can either use 'bb.action.SHARE' and and an attachment in uri.
InvokeManager invokeManager;
Application of InvokeRequest;
request.setTarget ("sys.pim.uib.email.hybridcomposer");
request.setAction ("bb.action.SHARE");
request.setUri ("file:/ /...");
invokeManager.invoke (request);
Or use "bb.action.COMPOSE + topic/mailto etc. in uri.
But not the two mailto and attachment.
QString uri ("mailto:[email protected]?subject=test&attachment=file :// /...") ») ;
The fixation part above did not work. Rest did.
I tried to put the data() function, but it did not work
Data of QString ('{\"to\': [------' [email protected]']}");
request.setData (data.toUtf8 ());
I add an option to download logs in my app and so far it seems only fair, I will be able to add attachments and let the user to add my email
There is another thread (or more) with this question and no one has reported success.
The last I heard, BB people were still investigating and had not reported any workaround solution.
At this point, I guess that's something we won't until a later update of firmware or maybe the SDK, or both.
-
Problem with InvokeManager::invoked
I use Invocation Framework as client and target.
client works well.
now added support to be relied on as a target.
added to the handle bar:
my-name assets/images/my-icon.png APPLICATION bb.action.OPEN image/png .... some moreUsing the application InvocationClient Cascades - community - samples to Github, I can ask my app, app will be found and also launched or opened.
If the app is known as a target and the filter works as expected.
But I don't get the InvokationRequest in my SLOT:
PPS:
private Q_SLOTS: void handleInvoke(const InvokeRequest& request);
CPP:
void MyApp::handleInvoke(const InvokeRequest& request) { qDebug() << "Invoke Request to handle"; }
debugging and found that the connection has not been made.
This is my login code:
m_invokeManager = new InvokeManager(this); ok = connect(m_invokeManager, SIGNAL(invoked(const InvokeRequest&)), this, SLOT(handleInvoke(const InvokeRequest&))); if (!ok) { qDebug() << "connect handleInvoke failed"; }
Failed to connect with:
Object::connect: No such signal bb::system::InvokeManager::invoked(const InvokeRequest&)
no idea what could be the problem?
Probably need to namespaces... try this
_invokeManager = new InvokeManager(this); connect(_invokeManager, SIGNAL(invoked(const bb::system::InvokeRequest&)),this, SLOT(onInvoked(const bb::system::InvokeRequest&)));
-
do * errors with InvokeManager
I am new to c ++, so perhaps this question is stupid.
Want to test the invokemManager, that is why I have included
#include
using namespace bb::system;
and as soon as I type in the constructor:
InvokeManager * iManager = new InvokeManager (this);
I always get the following errors while building the app:
make: * [Device-Debug] error 2
make [1]: * [debug] error 2
make [2]: * [o.le - v7-g/Test3App] error 1
What Miss me?
Thank you!
Hello!
I'm new to C++ too, and I had a few difficulties to pass a Beta2 to Beta3.
I just had this problem, and I found in the reference of the InvokeManager which
To bind against this class, add the following line to your .pro file: LIBS +=-lbbsystem.
So open your project .pro and paste - lbbsystem if necessary.
Pepe
-
Share multiple files via e-mail and Invocation vs InvokeManager
Hello
Sorry for the long post, in fact I can invoke multiple file sharing using method 2, but I don't know what the problem with method 1. I would like to here your suggestions/advice/explanation in this regard.
Method 1: I use Invocation to share several files by e-mail by following the guide here:
https://developer.BlackBerry.com/native/documentation/Cascades/device_platform/invocation/email.html
However I can't make it work.
My Page is:
Page { id: mainPage attachedObjects: [ Invocation { id: emailShare query { invokeTargetId: "sys.pim.uib.email.hybridcomposer" invokeActionId: "bb.action.SHARE" uri: "list://" data: "[{\"uri\": \"/accounts/1000/shared/downloads/test.txt\"},{\"uri\": \"/accounts/1000/shared/downloads/test.txt.1\"}]" mimeType: "filelist/mixed" } } ] Container { Button { text: "Share" onClicked: { emailShare.trigger(emailShare.query.invokeActionId); } } } }
When I run the app, it output the error to the console, and then when I click the button nothing happens.
InvocationWrapper::onQueryFinished: no matching result from Menu Service for query mimeType="filelist/mixed" uri=QUrl("list://") data= "[{"uri": "/accounts/1000/shared/downloads/test.txt"},{"uri": "/accounts/1000/shared/downloads/test.txt.1"}]" metadata= QMap() perimeter= 0 action= "bb.action.SHARE" target= "sys.pim.uib.email.hybridcomposer" invokerIncluded= false InvocationPrivate::onQueryResolved: no result matching query, no armed signal sent.
Method 2: If I change to use InvokeManager as shown here:
So it works, the app can call emails to share multiple files.
Page { id: mainPage Container { Button { text: "Share" onClicked: { _appUI.share(); } } } }
void ApplicationUI::share() { QString fileList = "[{\"uri\": \"/accounts/1000/shared/downloads/test.txt\"},{\"uri\": \"/accounts/1000/shared/downloads/test.txt.1\"}]"; InvokeRequest invokeRequest; invokeRequest.setTarget("sys.pim.uib.email.hybridcomposer"); invokeRequest.setAction("bb.action.SHARE"); invokeRequest.setUri("list://"); invokeRequest.setData(fileList.toUtf8()); invokeRequest.setMimeType("filelist/mixed"); mInvokeManager->invoke(invokeRequest);}
My questions are:
1. What is different between the 2 methods?
2. Why use Invocation gives error with Menu Service & InvocationWrapper? In this case I have to sign something up with the Menu Service to make it work?
Best regards
One last thing to try. Can remove you the ID of the target and let all remains unchanged?
I just remembered that there is a known issue with envelope API call where if you specify the target ID, it does not work.
Shadid
-
Hello
I finally managed to download a PDF file and now need to open it. First step is an InvokeRequest on the adobeReader but even when there is no errors there is also no recognizable reaction.
qDebug() << "PDF geladen!"; // PathQString fn = "tmp.pdf";QString path = QDir::currentPath() + "/shared/downloads/"; QString url = path + fn; QFile pdfFile(url); // Saveif(pdfFile.open(QIODevice::WriteOnly | QIODevice::Unbuffered)){ pdfFile.write(reply->readAll()); pdfFile.flush(); pdfFile.close(); qDebug() << "# PDF öffnen! " + url; InvokeRequest cardrequest; cardrequest.setMimeType("application/pdf"); cardrequest.setAction("bb.action.OPEN"); cardrequest.setUri(url); cardrequest.setTarget("com.rim.bb.app.adobeReader"); InvokeManager invokemanager; InvokeTargetReply *reply = invokemanager.invoke(cardrequest); if (reply) { qDebug() << "InvokePDF"; QObject::connect( reply, SIGNAL(finished()), this, SLOT(onPdfInvoked()) ); } else { qDebug() << "Invocation Connecting Failed!!"; } }else{ qDebug() << "# Error!";}
/** PDF wird geöffnet */ void ApplicationUI::onPdfInvoked() { qDebug() << "OpenPDF"; InvokeTargetReply *reply = qobject_cast
(sender()); if (reply->error()) { qDebug() << "Invoke Failed - Do something"; } reply->deleteLater(); } The latest debugging information are the "InvokePDF" but it opens a PDF reader nor can I find the debug info «OpenPDF»
What is my mistake in this case?
Best
Thomas
I got it! Solution was (as always) easy. The required parameter .setUri "file:///" - prefix, like this:
InvokeRequest cardrequest; cardrequest.setMimeType("application/pdf"); cardrequest.setAction("bb.action.VIEW"); cardrequest.setTarget("com.rim.bb.app.adobeReader.viewer"); cardrequest.setUri("file:///" + url);
-
I need an example code or information on how to trigger a BBM Chat with on a particular PIN the ActionBar or a button.
Any link reference or help would be greatly appreciated.
Thank you!
After this doc:
https://developer.BlackBerry.com/native/documentation/device_platform/invocation/BBM.html
As uri (pin:<>) is almost unique to BBM app, using only the uri in the InvokeRequest would work, but if another application to register this uri, you include better target ID and ID of action both to ensure that the application of the right is open.
In addition, do not use class Invocation of QML, which is not the same class as InvokeManager and tends to fail in many cases, including this one.
Main.QML
import bb.cascades 1.4 Page { Container { TextField { id: bbmPin hintText: "Enter BBM pin here" inputMode: TextFieldInputMode.Pin onTextChanging: { button.enabled = (text.length == 8) } } Button { id: button text: "Chat" enabled: bbmPin.text.length == 8 onClicked: { _app.startBbmChat(bbmPin.text) } } } }
ApplicationUI.cpp
#include
#include /* ... */ void ApplicationUI::startBbmChat(const QString& pin) { bb::system::InvokeRequest request; request.setAction("bb.action.BBMCHAT"); request.setTarget("sys.bbm.sharehandler"); request.setUri("pin:" + pin); bb::system::InvokeManager invokeManager; invokeManager.invoke(request); } ApplicationUI.hpp
/* ... */ public: ApplicationUI(); virtual ~ApplicationUI() {} Q_INVOKABLE void startBbmChat(const QString& pin); /* ... */
-
Invoke the permissions map problem
Hi all
I caught a strange behavior to use the app parameter map on OS 10.2.0.
I use following code to call the card of my application permissions.
InvokeRequest request; request.setTarget("sys.settings.card"); request.setAction("bb.action.OPEN"); request.setMimeType("settings/view"); request.setUri("settings://permissions"); InvokeManager->invoke(request);
After reinstalling it works normally. The user can change any permission. Example is attached (perms_normal.png). It shows that the rank of my app App_Name in title and subtitle App_Author. Also the dropdown list control is enabled.
After the second call of the card, the screen is unresponsive on the interaction of the user. Example is attached (perms_disabled.png). As you can see the drop-down list button is disabled and online app has no name of the author. Also ranked app tap does not prevent to open the Details page of the authorization. At the same time that other controls work normally, I can type on the "back" button or scroll the list of applications.
Then a few times user can change the permissions open my application.
The problem on 10.2.0.1155 device simulator and q10 with OS 10.2.0.1157.
Could someone help with this problem?
I remember what a bug in Mac OS 10.2. I have not experienced this problem to 10.3, it seems to have been fixed since. There's not that you can really do about it for users still running Mac OS 10.2.
-
How to call permission settings specific app
Does anyone know all the parameters of invocation to summon the settings of the Application for a specific application's permissions?
There are documented for notification of the specific application settings method .
However, this approach does not work for app-specific permissions. Some the developers think that it is not possible at all.However, Device Monitor on 10.3.2 manages to do exactly that, somehow!
For example, if you open the details of the application Stats provider, there is a link "to improve the battery life, you can turn off the race when minimized this app permission.» change your App permissions. " This link directly opens the map in the app-specific permission settings.So there must be a way?
OK, after you apply some black magic to a certain file .bar kindly provided by Knowyou, I figured it out.
First of all, some include:
#include
#include #include Make sure to link the corresponding libraries by adding the following line to your .pro file:
LIBS += -lbb -lbbsystem
Finally, copy the following code will open the authorization of your application settings page:
bb::PackageInfo packageInfo; bb::system::InvokeManager invokeManager; bb::system::InvokeRequest request; request.setAction("bb.action.OPEN"); request.setMimeType("settings/view"); request.setTarget("sys.settings.card"); request.setUri("settings://permissions?appId=" + packageInfo.installId()); invokeManager.invoke(request);
Please keep in mind that this behavior is not documented and could change in the future.
In the meantime, enjoy!
Maybe you are looking for
-
Where did "recently marked with a bookmark?
Since the upgrade to 13 FF I have recently bookmarked in my drop down list more.He uses a lot and miss me him! Also recently synced my FF between desktop and laptop, does that take away "recent bookmarks"? Thank you!
-
My Satellite A200 - 1 GB hangs if it remains unused
Hey,. my laptop freezes completely if I let it be used for little more than 1 to 2 hours. Laptop works absolutely perfect as long, I continue to use it for hours... But the moment I leave unused for about 1 to 2 hours.It freezes completely. None of t
-
Satellite Pro U400-11V: possible to increase the 60 Hz screen refresh rate
I have a laptop Toshiba Satellite Pro U400-11v.I just realized that my screen refresh rate is 60 Hz (resolution 1280 x 800).Even I decrease the resolution. It won t be another option 60 Hertz.Is it possible to increase it?My monitor is indicated unde
-
slatebook x 2: slatebook HP x 2 does not
unit just out at full load and will not power upward. even if it is compressed with base or separated. any ideas to check?
-
I need a 74HC259 8-bit addressable latch. In the Multisim component reference, I found an entry for "74xx259" but I can't really find this chip anywhere. Can someone help me get this chip in my Multisim? Thank you!