mirror of https://github.com/ClassiCube/ClassiCube
Symbian: Implement clipboard
This commit is contained in:
parent
900d76d94c
commit
edbfa2905f
|
|
@ -16,6 +16,8 @@ LIBRARY apparc.lib
|
||||||
LIBRARY eikcore.lib
|
LIBRARY eikcore.lib
|
||||||
LIBRARY eikdlg.lib
|
LIBRARY eikdlg.lib
|
||||||
LIBRARY mediaclientaudiostream.lib
|
LIBRARY mediaclientaudiostream.lib
|
||||||
|
LIBRARY estor.lib
|
||||||
|
LIBRARY bafl.lib
|
||||||
|
|
||||||
LIBRARY libc.lib
|
LIBRARY libc.lib
|
||||||
LIBRARY libm.lib
|
LIBRARY libm.lib
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,8 @@
|
||||||
#include <AknUtils.h>
|
#include <AknUtils.h>
|
||||||
#include <eikstart.h>
|
#include <eikstart.h>
|
||||||
#include <aknmessagequerydialog.h>
|
#include <aknmessagequerydialog.h>
|
||||||
|
#include <baclipb.h>
|
||||||
|
#include <s32ucmp.h>
|
||||||
#include <classicube.rsg>
|
#include <classicube.rsg>
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
@ -801,6 +803,63 @@ static void ShowDialogL(const char* title, const char* msg) {
|
||||||
dialog->RunLD();
|
dialog->RunLD();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void GetClipboardL(cc_string* value) {
|
||||||
|
TUid uid = {268450333}; // KClipboardUidTypePlainText
|
||||||
|
|
||||||
|
CClipboard* cb = CClipboard::NewForReadingLC(CCoeEnv::Static()->FsSession());
|
||||||
|
TStreamId stid = cb->StreamDictionary().At(uid);
|
||||||
|
if (stid != KNullStreamId) {
|
||||||
|
RStoreReadStream stream;
|
||||||
|
stream.OpenLC(cb->Store(), stid);
|
||||||
|
const TInt32 size = stream.ReadInt32L();
|
||||||
|
HBufC* buf = HBufC::NewLC(size);
|
||||||
|
buf->Des().SetLength(size);
|
||||||
|
|
||||||
|
TUnicodeExpander e;
|
||||||
|
TMemoryUnicodeSink sink(&buf->Des()[0]);
|
||||||
|
e.ExpandL(sink, stream, size);
|
||||||
|
|
||||||
|
String_AppendUtf16(value, buf->Ptr(), buf->Length() * 2);
|
||||||
|
|
||||||
|
stream.Close();
|
||||||
|
CleanupStack::Pop();
|
||||||
|
CleanupStack::PopAndDestroy(buf);
|
||||||
|
}
|
||||||
|
CleanupStack::PopAndDestroy(cb);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void SetClipboardL(const cc_string* value) {
|
||||||
|
TUid uid = {268450333}; // KClipboardUidTypePlainText
|
||||||
|
|
||||||
|
HBufC* buf = HBufC::NewLC(value->length + 1);
|
||||||
|
TPtr16 des = buf->Des();
|
||||||
|
ConvertToUnicode(des, value);
|
||||||
|
|
||||||
|
CClipboard* cb = CClipboard::NewForWritingLC(CCoeEnv::Static()->FsSession());
|
||||||
|
|
||||||
|
RStoreWriteStream stream;
|
||||||
|
TStreamId stid = stream.CreateLC(cb->Store());
|
||||||
|
stream.WriteInt32L(buf->Length());
|
||||||
|
|
||||||
|
TUnicodeCompressor c;
|
||||||
|
TMemoryUnicodeSource source(buf->Ptr());
|
||||||
|
TInt bytes(0);
|
||||||
|
TInt words(0);
|
||||||
|
c.CompressL(stream, source, KMaxTInt, buf->Length(), &bytes, &words);
|
||||||
|
|
||||||
|
stream.WriteInt8L(0);
|
||||||
|
|
||||||
|
stream.CommitL();
|
||||||
|
cb->StreamDictionary().AssignL(uid, stid);
|
||||||
|
cb->CommitL();
|
||||||
|
|
||||||
|
stream.Close();
|
||||||
|
CleanupStack::PopAndDestroy();
|
||||||
|
CleanupStack::PopAndDestroy(cb);
|
||||||
|
|
||||||
|
CleanupStack::PopAndDestroy(buf);
|
||||||
|
}
|
||||||
|
|
||||||
// Window implementation
|
// Window implementation
|
||||||
|
|
||||||
void Window_PreInit(void) {
|
void Window_PreInit(void) {
|
||||||
|
|
@ -835,11 +894,11 @@ void Window_Destroy(void) { }
|
||||||
void Window_SetTitle(const cc_string* title) { }
|
void Window_SetTitle(const cc_string* title) { }
|
||||||
|
|
||||||
void Clipboard_GetText(cc_string* value) {
|
void Clipboard_GetText(cc_string* value) {
|
||||||
// TODO
|
TRAP_IGNORE(GetClipboardL(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Clipboard_SetText(const cc_string* value) {
|
void Clipboard_SetText(const cc_string* value) {
|
||||||
// TODO
|
TRAP_IGNORE(SetClipboardL(value));
|
||||||
}
|
}
|
||||||
|
|
||||||
int Window_GetWindowState(void) {
|
int Window_GetWindowState(void) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue