22 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
23 #include <com/sun/star/sdb/DatabaseContext.hpp>
24 #include <com/sun/star/sdb/CommandType.hpp>
35 #include <strings.hrc>
36 #include <bitmaps.hlst>
46 "ExchangeDatabasesDialog")
47 , pSh(rVw.GetWrtShellPtr())
48 , m_xUsedDBTLB(m_xBuilder->weld_tree_view(
"inuselb"))
49 , m_xAvailDBTLB(new
SwDBTreeList(m_xBuilder->weld_tree_view(
"availablelb")))
50 , m_xAddDBPB(m_xBuilder->weld_button(
"browse"))
51 , m_xDocDBNameFT(m_xBuilder->weld_label(
"dbnameft"))
52 , m_xDefineBT(m_xBuilder->weld_button(
"ok"))
54 int nWidth =
m_xUsedDBTLB->get_approximate_digit_width() * 25;
66 m_xUsedDBTLB->set_selection_mode(SelectionMode::Multiple);
80 Reference<XDatabaseContext> xDBContext = DatabaseContext::create(xContext);
86 auto aAllDBNames = comphelper::sequenceToContainer<std::vector<OUString>>(aDBNames);
88 std::vector<OUString> aDBNameList;
91 size_t nCount = aDBNameList.size();
93 std::unique_ptr<weld::TreeIter> xFirst;
95 for(
size_t k = 0; k < nCount; k++)
99 xFirst = std::move(xLast);
116 sal_Int32 nCommandType = sUserData.toInt32();
118 const OUString & rToInsert ( nCommandType ? RID_BMP_DBQUERY : RID_BMP_DBTABLE );
120 std::unique_ptr<weld::TreeIter> xIter(
m_xUsedDBTLB->make_iterator());
129 std::unique_ptr<weld::TreeIter> xChild(
m_xUsedDBTLB->make_iterator(xIter.get()));
139 m_xUsedDBTLB->insert(xIter.get(), -1, &sTableName, &sUserData,
nullptr,
nullptr,
147 m_xUsedDBTLB->insert(
nullptr, -1, &sDBName,
nullptr,
nullptr,
nullptr,
150 m_xUsedDBTLB->insert(xIter.get(), -1, &sTableName, &sUserData,
nullptr,
nullptr,
163 short nRet = SfxDialogController::run();
171 std::vector<OUString> aDBNames;
176 std::unique_ptr<weld::TreeIter> xIter(
m_xUsedDBTLB->make_iterator(&rEntry));
181 aDBNames.push_back(sTmp);
188 OUString sColumnName;
190 const OUString DBName(
m_xAvailDBTLB->GetDBName(sTableName, sColumnName, &bIsTable));
191 const OUString sTemp = DBName
195 + OUString::number(bIsTable
197 : CommandType::QUERY);
205 OUString sColumnName;
208 aData.
sDataSource = m_xAvailDBTLB->GetDBName(sTableName, sColumnName, &bIsTable);
211 pSh->ChgDBData(aData);
212 ShowDBName(pSh->GetDBData());
223 bool bEnable =
false;
224 std::unique_ptr<weld::TreeIter> xIter(
m_xAvailDBTLB->make_iterator());
251 if (!sNewDB.isEmpty())
253 m_xAvailDBTLB->AddDataSource(sNewDB);
#define LINK(Instance, Class, Member)
std::unique_ptr< weld::Label > m_xDocDBNameFT
virtual ~SwChangeDBDlg() override
std::basic_string_view< charT, traits > getToken(std::basic_string_view< charT, traits > sv, charT delimiter, std::size_t &position)
OUString SwResId(TranslateId aId)
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.
SwChangeDBDlg(SwView const &rVw)
std::unique_ptr< weld::Button > m_xAddDBPB
std::unique_ptr< weld::TreeIter > Insert(std::u16string_view rDBName)
std::unique_ptr< weld::TreeView > m_xUsedDBTLB
Reference< XExecutableDialog > m_xDialog
Reference< XComponentContext > getProcessComponentContext()
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.