22 #include <string_view>
24 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
25 #include <com/sun/star/sdb/DatabaseContext.hpp>
26 #include <com/sun/star/sdb/CommandType.hpp>
36 #include <strings.hrc>
37 #include <bitmaps.hlst>
47 "ExchangeDatabasesDialog")
48 , pSh(rVw.GetWrtShellPtr())
49 , m_xUsedDBTLB(m_xBuilder->weld_tree_view(
"inuselb"))
50 , m_xAvailDBTLB(new
SwDBTreeList(m_xBuilder->weld_tree_view(
"availablelb")))
51 , m_xAddDBPB(m_xBuilder->weld_button(
"browse"))
52 , m_xDocDBNameFT(m_xBuilder->weld_label(
"dbnameft"))
53 , m_xDefineBT(m_xBuilder->weld_button(
"ok"))
55 int nWidth =
m_xUsedDBTLB->get_approximate_digit_width() * 25;
67 m_xUsedDBTLB->set_selection_mode(SelectionMode::Multiple);
81 Reference<XDatabaseContext> xDBContext = DatabaseContext::create(xContext);
87 auto aAllDBNames = comphelper::sequenceToContainer<std::vector<OUString>>(aDBNames);
89 std::vector<OUString> aDBNameList;
92 size_t nCount = aDBNameList.size();
94 std::unique_ptr<weld::TreeIter> xFirst;
96 for(
size_t k = 0; k < nCount; k++)
98 std::unique_ptr<weld::TreeIter> xLast =
Insert(aDBNameList[k].
getToken(0,
';'));
100 xFirst = std::move(xLast);
114 const OUString sDBName(rDBName.getToken(0,
DB_DELIM, nIdx));
115 const OUString sTableName(rDBName.getToken(0,
DB_DELIM, nIdx));
116 OUString sUserData = rDBName.getToken(0,
DB_DELIM, nIdx);
117 sal_Int32 nCommandType = sUserData.toInt32();
119 OUString rToInsert ( nCommandType ? std::u16string_view(
u"" RID_BMP_DBQUERY) : std::u16string_view(
u"" RID_BMP_DBTABLE) );
121 std::unique_ptr<weld::TreeIter> xIter(
m_xUsedDBTLB->make_iterator());
130 std::unique_ptr<weld::TreeIter> xChild(
m_xUsedDBTLB->make_iterator(xIter.get()));
140 m_xUsedDBTLB->insert(xIter.get(), -1, &sTableName, &sUserData,
nullptr,
nullptr,
148 m_xUsedDBTLB->insert(
nullptr, -1, &sDBName,
nullptr,
nullptr,
nullptr,
151 m_xUsedDBTLB->insert(xIter.get(), -1, &sTableName, &sUserData,
nullptr,
nullptr,
164 short nRet = SfxDialogController::run();
172 std::vector<OUString> aDBNames;
177 std::unique_ptr<weld::TreeIter> xIter(
m_xUsedDBTLB->make_iterator(&rEntry));
182 aDBNames.push_back(sTmp);
189 OUString sColumnName;
191 const OUString DBName(
m_xAvailDBTLB->GetDBName(sTableName, sColumnName, &bIsTable));
192 const OUString sTemp = DBName
196 + OUString::number(bIsTable
198 : CommandType::QUERY);
206 OUString sColumnName;
209 aData.
sDataSource = m_xAvailDBTLB->GetDBName(sTableName, sColumnName, &bIsTable);
212 pSh->ChgDBData(aData);
213 ShowDBName(pSh->GetDBData());
224 bool bEnable =
false;
225 std::unique_ptr<weld::TreeIter> xIter(
m_xAvailDBTLB->make_iterator());
252 if (!sNewDB.isEmpty())
254 m_xAvailDBTLB->AddDataSource(sNewDB);
#define LINK(Instance, Class, Member)
std::unique_ptr< weld::TreeIter > Insert(const OUString &rDBName)
std::unique_ptr< weld::Label > m_xDocDBNameFT
virtual ~SwChangeDBDlg() override
void ShowDBName(const SwDBData &rDBData)
constexpr OUStringLiteral aData
weld::Window * GetFrameWeld(const SfxFrame *pFrame)
void GetAllUsedDB(std::vector< OUString > &rDBNameList, std::vector< OUString > const *pAllDBNames)
virtual short run() override
SwDBData const & GetDBData() const
Database information.
OUString SwResId(const char *pId)
SwChangeDBDlg(SwView const &rVw)
std::unique_ptr< weld::Button > m_xAddDBPB
std::unique_ptr< weld::TreeView > m_xUsedDBTLB
Reference< XExecutableDialog > m_xDialog
Reference< XComponentContext > getProcessComponentContext()
sal_Int32 getToken(const Context &rContext, const char *pToken)
std::unique_ptr< weld::Button > m_xDefineBT
IMPL_LINK_NOARG(SwChangeDBDlg, ButtonHdl, weld::Button &, void)
static OUString LoadAndRegisterDataSource(weld::Window *pParent, SwDocShell *pDocShell=nullptr)
Loads a data source from file and registers it.
std::unique_ptr< SwDBTreeList > m_xAvailDBTLB
void ChangeDBFields(const std::vector< OUString > &rOldNames, const OUString &rNewName)
void StartAllAction()
For all views of this document.